const db = require('../config/db');

class Lowcode {
  /**
   * 获取所有 AMIS 配置页面（支持分页）
   * @param {number} page - 当前页码，从 1 开始
   * @param {number} perPage - 每页的记录数
   * @returns {Promise<Array>} 包含当前页 AMIS 配置页面的数组
   */
  static async getAll(page = 1, perPage = 10) {
    const offset = (page - 1) * perPage;
    const [rows] = await db.query('SELECT * FROM amis_config_pages LIMIT ? OFFSET ?', [perPage, offset]);
    return rows;
  }

  /**
   * 根据 ID 获取单个 AMIS 配置页面
   * @param {number} id - 页面的唯一标识符
   * @returns {Promise<Object|null>} 单个 AMIS 配置页面对象，如果未找到则返回 null
   */
  static async getById(id) {
    const [rows] = await db.query('SELECT * FROM amis_config_pages WHERE id = ?', [id]);
    return rows[0];
  }

  /**
   * 创建新的 AMIS 配置页面
   * @param {string} pageName - 页面名称
   * @param {Object} configJson - AMIS 配置的 JSON 数据
   * @returns {Promise<number>} 新插入记录的 ID
   */
  static async create(pageName, configJson) {
    console.log(pageName, configJson);
    // 将 configJson 转换为 JSON 字符串
    const [result] = await db.query(
      'INSERT INTO amis_config_pages (page_name, config_json) VALUES (?, ?)',
      [pageName, JSON.stringify(configJson)]
    );
    return result.insertId;
  }

  /**
   * 根据 ID 更新 AMIS 配置页面
   * @param {number} id - 页面的唯一标识符
   * @param {string} pageName - 页面名称
   * @param {Object} configJson - AMIS 配置的 JSON 数据
   * @returns {Promise<number>} 受影响的行数
   */
  static async update(id, pageName, configJson) {
    const [result] = await db.query(
      'UPDATE amis_config_pages SET page_name = ?, config_json = ? WHERE id = ?',
      [pageName, JSON.stringify(configJson), id]
    );
    return result.affectedRows;
  }

  /**
   * 根据 ID 删除 AMIS 配置页面
   * @param {number} id - 页面的唯一标识符
   * @returns {Promise<number>} 受影响的行数
   */
  static async delete(id) {
    const [result] = await db.query('DELETE FROM amis_config_pages WHERE id = ?', [id]);
    return result.affectedRows;
  }
}

module.exports = Lowcode;